home *** CD-ROM | disk | FTP | other *** search
/ ShareWare OnLine 2 / ShareWare OnLine Volume 2 (CMS Software)(1993).iso / prog / rukq10.zip / RUCKDAC.BI < prev    next >
Text File  |  1993-02-15  |  13KB  |  292 lines

  1. 'RUCKDAC.BI 10-Jan-93 BETA 0.50 ------------------
  2. 'BETA NOT FOR PUBLIC RELEASE
  3. 'Do not distribute this release
  4. 'Do not create programs for distribution with this release
  5.  
  6. DECLARE FUNCTION RUCKDAC% (SEG packinfo AS ANY)
  7.  
  8. CONST SysInfoDac = 0, InitDac = 1, ExitDac = 2, AtExitDac = 3
  9. CONST LoadDac = 4, PlayDac = 5, RecordDac = 6
  10. CONST StoreDac = 7, EndDac = 8, PauseDac = 9
  11. CONST DeallocDac = 10
  12.  
  13. CONST SetAllDac = 20, SetVolumeDac = 21, SetIntRateDac = 22, SetPriorityDac = 23
  14. CONST GetBufferDataDac = 28, GetBytePosDac = 29
  15.  
  16. CONST SetAllSBP = 30, SetVolMainSBP = 31, SetVolVocSBP = 32
  17. CONST SetLevelMicSBP = 33, SetLevelCDSBP = 34, SetLevelLineSBP = 35
  18. CONST SetFilterOutSBP = 36, SetFilterInSBP = 37
  19. CONST SetSourceSBP = 38, SetStereoSBP = 39
  20.  
  21. CONST SetSpeakerSB = 40
  22. CONST GetMixerRegSBP = 48, GetDacSB = 49
  23.  
  24. CONST ExitMod = 50, AtExitMod = 51
  25. CONST LoadMod = 52, PlayMod = 53
  26. CONST EndMod = 54, PauseMod = 55
  27. CONST SetIntRateMod = 56, SetSpeedMod = 57
  28. CONST SetVolumeMod = 58, SetPositionMod = 59
  29. CONST SetStereoMod = 60, SetFastMod = 61
  30.  
  31. TYPE DeallocPackTYPE            'DP
  32.  Func       AS INTEGER
  33.  stat       AS INTEGER
  34.  HandSeg    AS INTEGER          'RUCKUS allocates either XMM handle or DOS para
  35.  TypeFlag   AS INTEGER          '0=DOS para, 1=XMS handle
  36. END TYPE '8
  37.  
  38. TYPE GetDataPackTYPE            'GDP
  39.  Func       AS INTEGER
  40.  stat       AS INTEGER
  41.  BytePos    AS LONG             'current byte relative base ptr (27)
  42.  BufferPtrOff AS INTEGER        'far pointer to buffer to fill with data,offset
  43.  BufferPtrSeg AS INTEGER        'segment
  44.  StartPos   AS LONG             'start get at this offset relative BufferPtr
  45.  BufferCnt  AS INTEGER          'bytes to fill (2-65520)
  46.  MixerReg   AS INTEGER          'SBPro mixer register to get
  47. END TYPE '20
  48.  
  49. TYPE InitPackTYPE               'IP
  50.  Func       AS INTEGER
  51.  stat       AS INTEGER
  52.  DeviceID   AS INTEGER          '0=SPKR,1=LPTDAC,2=DSS,4=SB,5=SBPro
  53.  IOport     AS INTEGER
  54.  IRQline    AS INTEGER
  55.  DMAch      AS INTEGER
  56.  Flags      AS INTEGER          '(see source)
  57.  InfoPtrOff AS INTEGER          'ret:far ptr to dac info
  58.  InfoPtrSeg AS INTEGER
  59.  DacExitPtrOff AS INTEGER       'ret:far ptr to dac's ExitXB routine
  60.  DacExitPtrSeg AS INTEGER
  61.  ModExitPtrOff AS INTEGER       'ret:far ptr to mod's ExitXB routine
  62.  ModExitPtrSeg AS INTEGER
  63. END TYPE '24
  64.  
  65. TYPE LoadPackTYPE               'LP
  66.  Func       AS INTEGER
  67.  stat       AS INTEGER
  68.  FilenamePtrOff AS INTEGER      'far ptr to filenameZ to load
  69.  FilenamePtrSeg AS INTEGER
  70.  StartPos   AS LONG             'offset into file to start load at
  71.  LoadSize   AS LONG             'number of bytes to load (or 0 for autosize)
  72.  XMMflag    AS INTEGER          'if <> 0 use XMS for load
  73.  XMMhandle  AS INTEGER          'ret:XMS handle, or
  74.  LoadPtrOff AS INTEGER          'ret:DOS seg:offset (offset always 0)
  75.  LoadPtrSeg AS INTEGER
  76. END TYPE '20
  77.  
  78. TYPE PlaybackPackTYPE           'PBP
  79.  Func       AS INTEGER
  80.  stat       AS INTEGER
  81.  Mode       AS INTEGER          'playback mode (0=interrupt FG,1=BG,2=DMA,3=DMA+BG for mod)
  82.  XMMhandle  AS INTEGER          'if <> 0 this XMM handle used regardless
  83.  LoadPtrOff AS INTEGER          'seg:off to start of data to play
  84.  LoadPtrSeg AS INTEGER
  85.  BufferSize AS INTEGER          'size of DMA buffer for mod playback
  86. END TYPE '14
  87.  
  88. TYPE PausePackTYPE              'PP
  89.  Func       AS INTEGER
  90.  stat       AS INTEGER
  91.  Pause      AS INTEGER          '0=unpause else pause
  92. END TYPE '6
  93.  
  94. TYPE RecordPackTYPE             'RP
  95.  Func         AS INTEGER
  96.  stat         AS INTEGER
  97.  SampleRate   AS INTEGER
  98.  XMMhandle    AS INTEGER        '-1 auto XMS (ret in dx) else use this handle
  99.  RecordPtrOff AS INTEGER        'seg:off of buffer to store (0 for auto-store)
  100.  RecordPtrSeg AS INTEGER
  101.  RecordBytes  AS LONG           'bytes to record
  102.  StereoFlag   AS INTEGER        'stereo flag
  103. END TYPE '18
  104.  
  105. TYPE SaveDataPackTYPE           'SDP
  106.  Func       AS INTEGER
  107.  stat       AS INTEGER
  108.  FilenamePtrOff AS INTEGER      'far ptr to filenameZ to save
  109.  FilenamePtrSeg AS INTEGER
  110.  DataPtrOff AS INTEGER          'pointer to start of data to save, offset
  111.  DataPtrSeg AS INTEGER          'segment (or 0 if XMS)
  112.  FileType   AS INTEGER          '1=VOC,2=WAV
  113.  XMMhandle  AS INTEGER          'XMS handle of data to save (0 if DOS data)
  114. END TYPE '16
  115.  
  116. TYPE SetPackTYPE                'SP
  117.  Func       AS INTEGER
  118.  stat       AS INTEGER          ' (if volume=0 SB speaker off'ed else on'ed)
  119.  Volume     AS INTEGER          'volume (left ch=MSB,right=LSB) (0-127,0-127)
  120.  IntRate    AS INTEGER          'playback interrupt rate (5000-23000)
  121.  Priority   AS INTEGER          'priority level (0-2, default=1)
  122. END TYPE '18
  123.  
  124. TYPE SetModPackTYPE             'SMP                    'stereo modes
  125.  Func       AS INTEGER                                  'A=ch1+ch3 & ch2+ch4
  126.  stat       AS INTEGER                                  'B=?
  127.  VolCh1     AS INTEGER          'channel volume (0-255) 'C=?
  128.  VolCh2     AS INTEGER          'channel volumes adjustments made only
  129.  VolCh3     AS INTEGER          ' if FastMode=0
  130.  VolCh4     AS INTEGER
  131.  Stereo     AS INTEGER          'playback mode (0=mono,stereo 1=A,2=B,3=C)
  132.  FastMode   AS INTEGER          'fast playback (0=normal,1 fast,no ch volumes)
  133.  IntRate    AS INTEGER          'playback interrupt rate (5000-45500)
  134.  Position   AS INTEGER          'pattern list position (0-patterns to play)
  135.  Speed      AS INTEGER          'overall playback speed (1-15,default=6,15=slow)
  136.  SliceAdj   AS INTEGER          'slice adjust (1-64,default=1)
  137. END TYPE '24
  138.  
  139. TYPE SetProPackTYPE             'SPP
  140.  Func       AS INTEGER
  141.  stat       AS INTEGER
  142.  Volume     AS INTEGER          'volume (low=right;0-15, high byte=left;0-15)
  143.  VolVoc     AS INTEGER          '
  144.  VolMic     AS INTEGER          '(mono only, 0-7) input level
  145.  VolCD      AS INTEGER          'input level (0-15,0-15)
  146.  VolLI      AS INTEGER          'input level (0-15,0-15)
  147.  FilterOut  AS INTEGER          '0=filter off, 1=filter on
  148.  FilterIn   AS INTEGER          '0=filter off, 1=3.2kHz, 2=8.8kHz
  149.  SourceIn   AS INTEGER          '0=mic,1=CD,2=line
  150.  StereoIn   AS INTEGER          '0=mono,1=stereo record
  151. END TYPE '22
  152.  
  153. TYPE XitPackTYPE                'XP
  154.  Func       AS INTEGER
  155.  stat       AS INTEGER
  156. END TYPE '4
  157.  
  158. TYPE SysInfoPackTYPE            'SIP
  159.  Func       AS INTEGER          '
  160.  stat       AS INTEGER
  161.  CPU        AS INTEGER          'CPU class (88,286,386,486)
  162.  CPUmode    AS INTEGER          '0=real mode,1=PM,2=PM w/paging
  163.  MHz        AS INTEGER          'approx speed (5,20,33)
  164.  Device0    AS INTEGER          '=1 speaker available
  165.  D0port     AS INTEGER          '42h
  166.  D0IRQ      AS INTEGER          'n/a
  167.  D0DMA      AS INTEGER          'n/a
  168.  D0flags    AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  169.  Device1    AS INTEGER          '=1 LPT-DAC available on LPT1
  170.  D1port     AS INTEGER          'port of _first_ LPT found in BIOS data area
  171.  D1IRQ      AS INTEGER          'n/a
  172.  D1DMA      AS INTEGER          'n/a
  173.  D1flags    AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  174.  Device2    AS INTEGER          '=1 Disney Sound Source available
  175.  D2port     AS INTEGER          'port of DSS
  176.  D2IRQ      AS INTEGER          'n/a
  177.  D2DMA      AS INTEGER          'n/a
  178.  D2flags    AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  179.  Device3    AS INTEGER          '=1 AdLib available
  180.  D3port     AS INTEGER          '388h
  181.  D3IRQ      AS INTEGER          'n/a
  182.  D3DMA      AS INTEGER          'n/a
  183.  D3flags    AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  184.  Device4    AS INTEGER          '=1 SB available
  185.  D4port     AS INTEGER          'port of SB
  186.  D4IRQ      AS INTEGER          'IRQ
  187.  D4DMA      AS INTEGER          'DMA
  188.  D4flags    AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  189.  Device5    AS INTEGER          '=1 SBPro available
  190.  D5port     AS INTEGER          'port of SBPro
  191.  D5IRQ      AS INTEGER          'IRQ
  192.  D5DMA      AS INTEGER          'DMA
  193.  D5flags    AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  194. END TYPE '70
  195.  
  196. TYPE SysDevTYPE                 'SD (used by BASIC 7.1 compiler)
  197.  device     AS INTEGER          '=1 device available
  198.  port       AS INTEGER
  199.  IRQ        AS INTEGER
  200.  DMA        AS INTEGER
  201.  Flags      AS INTEGER          'bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY
  202. END TYPE '10
  203.  
  204. TYPE SysInfoPackTYPE7           'SIP   BASIC 7.1: SIP.SD(0).device = ...
  205.  Func       AS INTEGER
  206.  stat       AS INTEGER
  207.  CPU        AS INTEGER          'CPU class (88,286,386,486)
  208.  CPUmode    AS INTEGER          '0=real mode,1=PM,2=PM w/paging
  209.  MHz        AS INTEGER          'approx speed (5,20,33)
  210.  ''SD(0 TO 5) AS SysDevTYPE       'QB45 won't accept arrays in TYPEs
  211. END TYPE '70
  212.  
  213. '---------------------------------dac_info---------------------------------
  214. 'dac@deviceID    dw 0       ;0   ;device ID
  215. 'dac@IOport      dw 0       ;2   ;port of device
  216. 'dac@IRQ         dw 0       ;4   ;IRQ of device
  217. 'dac@DMA         dw 0       ;6   ;DMA of device
  218. 'dac@Flags       dw 0       ;8   ;bit0=1 use DOS UMB memory
  219. '                                ;bit1-4 reserved
  220. '                                ;bit5=1 force XMS2 to be used
  221. ';SB device only one that pops!  ;bit6=1 force device speaker on until exit
  222. '                                ;bit7=1 force passed parms to be used
  223. '                                ;       Following values are ret bits
  224. '                                ;bit8=1 paging mechanism in force, no UMBs
  225. '                                ;bit9-15 reserved
  226. 'dac@end         dw 1       ;10  ;=1 end of play
  227. 'dac@pause       dw 0       ;12  ;=1 pause play
  228. 'dac@umbLink     dw 0       ;14  ;h=upper-memory link, l=org alloc strategy
  229. 'dac@memDOS      dw 0       ;16  ;DOS memory available (in K)
  230. 'dac@memXMM      dw 0       ;18  ;XMS memory available (in K)
  231. '
  232. '                ;following data should be zeroed before each load
  233. '
  234. 'dac@type        dw 0       ;20  ;digital file type (0=SAM,1=VOC w/header,2=WAV)
  235. 'dac@memUsed     dw 0       ;22  ;memory used for last file load (in K)
  236. 'dac@sampleRate  dw 0       ;24  ;sample rate currently playing
  237. 'dac@stereo      dw 0       ;26  ;stereo
  238. 'dac@vocLen      dd 0       ;28  ;length of voc block (only current block)
  239. 'dac@vocPtrPtr   dd 0       ;32  ;pointer to pointer->current data
  240. '
  241. 'dac@recordLen   dd 0       ;36  ;length of recorded data
  242. '
  243. 'LoadClearSize = $-dac@type
  244. '
  245. 'dac@sbpMixerPtr dd sbc@volMasterR ;40  ;pointer to SBP mixer data
  246. '                                       ;-4=farptr to SB data start (sbc@IRQnum)
  247. '                                       ;+0=volMasterR,+2=L
  248. '                                       ;+4=volVocR,+6=L
  249. '                                       ;+8=volMic
  250. '                                       ;+10=volCDR,+12=CDL
  251. '                                       ;+14=volLIR,+16=LIL
  252. '                                       ;+18=filterInOff,+20=filterOutOff
  253. '                                       ;+22=input source selected
  254. '                                       ;+24=input cutoff freq selected
  255. '                                       ;+26=1=stereo data output
  256. '                                       ;+27=1=high sample rate (>23kHz)
  257. '                                       ;+28=SB speaker on=1/off=0
  258. '                                       ;+30=DSPver (1xx, 2xx, 3xx)
  259. '                                       ;+32=sbc@DSPtype 1=SB2 or below, 3=SBPro
  260. 'dac@modDataPtr  dd DGROUP:mod@type     ;44  ;pointer to mod data
  261. '
  262. '
  263. ' -------mod section data --------------
  264. '
  265. 'mod@type        dw 0       ; 0  ;mod type (15 or 31 samples)
  266. 'mod@samples     dw 0       ; 2  ;number of instrument samples in mod
  267. 'mod@headerSeg   dw 0       ; 4  ;header segment (aka sample info)
  268. 'mod@patternSeg  dw 0       ; 6  ;patterns' segment (1 to pats2play 1K patterns)
  269. 'mod@sampleSeg   dw 31 DUP (0) ; 8 (+62) ;list of sample segments
  270. 'mod@stereo      dw 0       ; 70 ;=1 then playback in stereo (only SBPro can set)
  271. 'mod@fastMode    dw 0       ; 72 ;=1 then channel volume adjusts disabled
  272. '
  273. '                ;following data should be zeroed before each initial play
  274. '                ;from mod@mt_patListPos to ...
  275. '
  276. 'mod@mt_patListPos  dw 0    ;74  ;byte position within mod@patterList (0-127)
  277. 'mod@mt_notePatPos  dw 0    ;76  ;note position within pattern 1K area (0-1008)
  278. '                                ;pattern#=patternList(patListPos)
  279. '                                ;note is at offset (pattern#*1024)+notePatPos
  280. '                                ;-- in segment mod@patternSeg
  281. 'mod@hiPattern   dw 0       ;78  ;highest pattern number to play/+1!/ (0-63)
  282. 'mod@pats2play   dw 0       ;80  ;patterns to play (direct DOS file load here)
  283. 'mod@patternList db 128 DUP (0) ;82  (+128) ;pattern positions (to here)
  284. 'mod@MKoverflow  db 'AMIGAz'    ;210 (+6)   ;overflow for 31-instr patpos read
  285. '
  286. 'mod@memUsed     dw 0       ;216 ;DOS memory needed by mod file loaded (in para)
  287. 'mod@VS          dw 0       ;218 ;number of times VS handler entered (50Hz rate)
  288. '
  289.  
  290. 'END RUCKDAC.BI -----------------------
  291.  
  292.